package com.zlyx.easy.database.marker;

import java.lang.reflect.Field;

import javax.persistence.Column;

import com.zlyx.easy.core.tool.FormatTool;
import com.zlyx.easy.database.defaults.BaseDao;

/**
 * @Auth 赵光
 * @Describle Dao层定制接口
 * @2019年7月6日 上午11:07:24
 */
public interface DaoMarker{
	
	/**
	 * 默认提供persistence-api的支持
	 * @param field
	 * @return
	 */
	default String parse(Field field) {
		Column column = field.getAnnotation(Column.class);
		if (column != null && !"".equals(column.name()) && column.name() != null) {
			return column.name();
		}  else if(isChange()) {
			return FormatTool.camel2Underline(field.getName());
		}
		return field.getName();
	}

	/**
	 * 设置抽象Dao接口
	 * 
	 * @return
	 */
	default Class<?> getAbstractDaoClass() {
		return BaseDao.class;
	}

	/**
	 * 如果不存在字段注解，是否转换为下划线
	 * 
	 * @return
	 */
	default boolean isChange() {
		return true;
	}
}
